package com.ruoyi.iot.constant;

import lombok.Getter;

@Getter
public enum DbDataTypeEnum {
    /**
     * string类型
     */
    STRING("string","varchar(255)"),
    /**
     * 图片类型
     */
    IMAGES("images","varchar(255)"),
    /**
     * long类型
     */
    LONG("long","int8"),
    /**
     * int类型
     */
    INT("int","int"),
    /**
     * int类型
     */
    INT4("int4","int4"),
    /**
     * float类型
     */
    FLOAT("float","float4"),
    /**
     * double类型
     */
    DOUBLE("double","float8"),
    /**
     * date类型
     */
    DATE("date","timestamp"),
    /**
     * boolean类型
     */
    BOOL("bool","bool"),
    /**
     * geom类型
     */
    GEOM("geom","geometry");

    private final String code;

    private final String name;

    DbDataTypeEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public static DbDataTypeEnum getType(String code) {
        DbDataTypeEnum[] dbDataTypeEnums = values();
        for (DbDataTypeEnum dbDataTypeEnum : dbDataTypeEnums) {
            if (dbDataTypeEnum.code.equalsIgnoreCase(code)) {
                return dbDataTypeEnum;
            }
        }
        return STRING;
    }

    public static String getName(String code) {
        DbDataTypeEnum[] dbDataTypeEnums = values();
        for (DbDataTypeEnum dbDataTypeEnum : dbDataTypeEnums) {
            if (dbDataTypeEnum.code.equalsIgnoreCase(code)) {
                return dbDataTypeEnum.name;
            }
        }
        return null;
    }

    public static String getCode(String name) {
        DbDataTypeEnum[] dbDataTypeEnums = values();
        for (DbDataTypeEnum dbDataTypeEnum : dbDataTypeEnums) {
            String iName=dbDataTypeEnum.name.split("\\(")[0];
            String oName=name.split("\\(")[0];
            if (iName.equalsIgnoreCase(oName)) {
                return dbDataTypeEnum.code;
            }
        }
        return null;
    }
}
